The present invention relates generally to computer programs, and more specifically, to a method and apparatus for representing and rendering multiple instances of a panel.
Application programs typically include a user interface for displaying graphical elements and data produced during the execution of the program. Application programs often include one or more functional elements that are displayed to allow for selection or other user input in achieving a desired result.
Menus are used in computer programs to provide functionality. Types of menus that a user interface can include are dialog boxes, palettes, pull down menus, pop up hierarchial menus, hierarchial selection menus, textual menus, iconic menus and message boxes.
A menu""s descriptive information is typically stored in a resource. Resources are defined by their type and either a resource identifier (i.d.) or name. Typically, each resource has a certain type and each type corresponds to a specific function. For example, the resource type xe2x80x9cmenuxe2x80x9d can be used to describe menus used at the top of a screen. Resources of the same type residing in a program must have a unique resource i.d. For example, an application may have several resources of the type menu as long as each menu has a unique resource i.d.
A menu can include a panel. A panel is a stand alone functional operation or control without a defined appearance. A panel describes an operation and includes control specification as well as definition. Separate simple resources are defined for each panel. A simple resource is a resource that specifies the layout of the user interface elements for a particular instantiation of a panel. A simple resource lists what controls are to be included in a particular instantiation of a panel and where they should go. For example, one type of panel is a color picker, which includes controls allowing a user to choose a color. Typically, the functionality of a panel and appearance or layout at any given location in a user interface are described in one common body of code.
A computer programmer may desire to display a panel in several different formats and in several different places in a program. For example, a computer application may include a color picker that is displayed in a tabbed palette. In addition, a dialog box may include a color picker to allow a user to edit a color. When the color picker is displayed in a palette as shown in FIG. 1, the color picker may be drawn in a compact form. When the picker is displayed in a dialog box as shown in FIG. 2, the color picker can be drawn with a different appearance characterized by a different set of fonts and with controls positioned differently. Depending on where the color picker is used, some controls may be invisible.
A programmer typically writes special case codes to display a panel in more than one place, which adds to the time required to generate and debug a program. If multiple appearances are designed for a panel, such as to instantiate the panel in different types of menus in the user interface, the panel is typically written in multiple different ways, corresponding to each type of appearance. Each instance of the panel includes a unique resource and code that describes the functionality of the panel which is shared by all instances of the panel. Typically, there is a one-to-one relationship between a simple resource and the code that handles user interaction.
In one aspect, the invention provides a method for describing a panel to be displayed in a plurality of display contexts within a user interface and includes defining a panel description describing the functionality of the panel, a plurality of resource descriptions each describing the appearance of the panel and a mapping from each display context to one of the plurality of resource descriptions. The method includes associating the mapping and the panel description.
The invention includes numerous features. The step of defining a mapping can include building a table having an entry for each display context that includes a pointer to a resource description. The step of defining a mapping can include creating a resource including a table mapping each display context to a resource description. The method can further include separating functional and appearance aspects of the panel description.
In another aspect, the invention provides a resource for use in rendering a panel in a plurality of display contexts within a user interface and includes a panel description describing the functionality of the panel and a mapping associated with the panel description and defining a mapping between each display context and an associated resource description. The resource description describes an appearance of the panel in a particular display context.
In another aspect, the invention provides a method for rendering a panel in a display context within a user interface and includes providing a panel description describing the functionality of the panel and a mapping associated with the panel description and defining a mapping between display contexts and particular resource descriptions. Each resource description describes an appearance of the panel in a particular display context. The mapping is used to locate a particular resource description associated with the display context. The panel is rendered in accordance with the particular resource description and the panel description.
In anther aspect, the invention provides a method defining the appearance of a panel where the panel includes code defining functional aspects of the panel. The method includes defining bindings between simple resources and the code based on a context of use.
Advantages of the invention include one or more of the following. An a extra level of indirection between a panel description and its associated resources is provided. Rather than a one-to-one relationship between the resource and the panel description, there is a many-to-one relationship. Different resources can be specified to define different layouts in the same panel, but only a single block of code defined by a panel description is required to control the different instantiations of the panel. This code is shared among the resources thereby minimizing the amount of code required to be produced initially and maintained when supporting multiple instances of a panel. The use of common control code also facilitates consistency across the program.